From: Julien Grall Date: Fri, 10 May 2013 16:22:16 +0000 (+0100) Subject: xen/mm: Align virtual address on PAGE_SIZE in iounmap X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~6852 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=73a6a932d6e927c4608a8726987a3e89545d7bee;p=xen.git xen/mm: Align virtual address on PAGE_SIZE in iounmap ioremap function can unlikely return an unaligned virtual address if the physical address itself is unaligned on a page size. Signed-off-by: Julien Grall Acked-by: Jan Beulich Acked-by: Keir Fraser [ ijc -- include asm/page.h to fix build error on x86 ] --- diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h index 88e5d997a0..b1923dd221 100644 --- a/xen/include/xen/vmap.h +++ b/xen/include/xen/vmap.h @@ -2,6 +2,7 @@ #define __XEN_VMAP_H__ #include +#include void *vm_alloc(unsigned int nr, unsigned int align); void vm_free(const void *); @@ -15,7 +16,9 @@ void __iomem *ioremap(paddr_t, size_t); static inline void iounmap(void __iomem *va) { - vunmap((void __force *)va); + unsigned long addr = (unsigned long)(void __force *)va; + + vunmap((void *)(addr & PAGE_MASK)); } void vm_init(void);